/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.myapp.hibernate.util;

import com.myapp.hibernate.model.Estadio;
import java.util.ArrayList;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;

public class EstadioUtil {
    private Session sesion;
    private Transaction tx;

    private void iniciaOperacion() throws HibernateException {
        sesion = HibernateUtil.getSessionFactory().openSession();
        tx = sesion.beginTransaction();
    }

    private void manejaExcepcion(HibernateException e) throws HibernateException {
        tx.rollback();
        throw new HibernateException("Ocurrió un error en la capa de acceso a datos. Estadio", e);
    }
    
    public Estadio obtenerEstadio(int idEstadio) throws HibernateException {
        Estadio e = new Estadio();
        try {
            iniciaOperacion();
            e = (Estadio) sesion.get(Estadio.class, idEstadio);
        } finally {
            sesion.close();
        }

        return e;
    }
    public ArrayList<Estadio> obtenerListaEstadios() throws HibernateException {
        ArrayList<Estadio> lista = new ArrayList<Estadio>();
        try {
            iniciaOperacion();
            lista = (ArrayList<Estadio>) sesion.createQuery("from Estadio").list();
        } finally {
            sesion.close();
        }
        return lista;
    }
    public void guardar(Estadio nuevo) {
        try {
            iniciaOperacion();
            sesion.save(nuevo);
            tx.commit();
        } catch (HibernateException e) {
            manejaExcepcion(e);
            throw e;
        } finally {
            sesion.close();
        }
    }
    public void actualizaEstadio(Estadio EstadioAActualizar) {
        try {
            iniciaOperacion();
            sesion.update(EstadioAActualizar);
            tx.commit();
        } catch (HibernateException e) {
            manejaExcepcion(e);
            throw e;
        }
    }
    public void borrar(Estadio estadio) {
        try {
            iniciaOperacion();
            sesion.delete(estadio);
            tx.commit();
        } catch (HibernateException e) {
            manejaExcepcion(e);
            throw e;
        }
    }
}
